Merge branch 'matthiasc/atspi-child' into 'master'
authorMatthias Clasen <mclasen@redhat.com>
Tue, 27 Oct 2020 18:24:43 +0000 (18:24 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 27 Oct 2020 18:24:43 +0000 (18:24 +0000)
Emit ChildrenChanged signal on hierarchy updates

See merge request GNOME/gtk!2752

1  2 
gtk/gtkaccessible.c
gtk/gtkwidget.c
gtk/gtkwindow.c

index a98bd90ae2cbb5115a4bd65543d8a13385f54415,12be6332a3427373706b68b3726e88b38c5836fe..39c31d5b1ee08b3992ae819254d38084461fc34d
@@@ -746,9 -748,42 +748,43 @@@ gtk_accessible_should_present (GtkAcces
        !gtk_widget_get_visible (GTK_WIDGET (self)))
      return FALSE;
  
 -  if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE)
 +  if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE ||
 +      gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_PRESENTATION)
      return FALSE;
  
+   context = gtk_accessible_get_at_context (self);
+   if (gtk_at_context_has_accessible_state (context, GTK_ACCESSIBLE_STATE_HIDDEN))
+     {
+       GtkAccessibleValue *value;
+       value = gtk_at_context_get_accessible_state (context, GTK_ACCESSIBLE_STATE_HIDDEN);
+       if (gtk_boolean_accessible_value_get (value))
+         return FALSE;
+     }
    return TRUE;
  }
+ void
+ gtk_accessible_update_children (GtkAccessible           *self,
+                                 GtkAccessible           *child,
+                                 GtkAccessibleChildState  state)
+ {
+   GtkATContext *context;
+   if (GTK_IS_WIDGET (self) &&
+       gtk_widget_get_root (GTK_WIDGET (self)) == NULL)
+     return;
+   context = gtk_accessible_get_at_context (self);
+   /* propagate changes up from ignored widgets */
+   if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE)
+     context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (gtk_widget_get_parent (GTK_WIDGET (self))));
+   if (context == NULL)
+     return;
+   gtk_at_context_child_changed (context, 1 << state, child);
+   gtk_at_context_update (context);
+ }
diff --cc gtk/gtkwidget.c
Simple merge
diff --cc gtk/gtkwindow.c
Simple merge